package main

import (
	"fmt"
	"math"
)

/*
	灯泡开关
初始时有 n 个灯泡处于关闭状态。
对某个灯泡切换开关意味着：如果灯泡状态为关闭，那该灯泡就会被开启；而灯泡状态为开启，那该灯泡就会被关闭。
第 1 轮，每个灯泡切换一次开关。即，打开所有的灯泡。
第 2 轮，每两个灯泡切换一次开关。 即，每两个灯泡关闭一个。
第 3 轮，每三个灯泡切换一次开关。
第 i 轮，每 i 个灯泡切换一次开关。 而第 n 轮，你只切换最后一个灯泡的开关。
找出 n 轮后有多少个亮着的灯泡。


输入：n = 3
输出：1
解释：
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭].

你应该返回 1，因为只有一个灯泡还亮着。
 */

/*
解题思路
把开启用1表示，关闭使用0表示 找出规律
n	res
0	0
1	1
2	1
3	1
4	2
5	2
6	2
7	2
8	2
9	3
...
16	4
找到规律 其实规律也很好理解：最后灯泡的数量最后一盏灯有关
 */

func bulbSwitch(n int) int {
	res := math.Floor(math.Sqrt(float64(n)))   // 向下取整
	fmt.Println(res)
	return int(res)
}

func main() {
	fmt.Println(bulbSwitch(3))
}

